1. Field of the Invention
The present invention relates to graphics processing unit (“GPU”) testing techniques, and more particularly, to a method and system for automatically analyzing GPU test results.
2. Description of the Related Art
Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
A GPU is a dedicated graphics rendering device with a highly parallel architecture capable of performing complex algorithms. Before mass producing such a complicated device or a product containing the device (e.g., a graphics adapter), extensive testing is needed to ensure the proper functioning of the GPU design and also to determine a set of optimal parameters for the GPU. In particular, a GPU includes a set of registers configured to control the communication interface between the GPU and graphics memory. The values stored in these registers directly affect certain hardware configurations in the GPU, which cause the data signals associated with the communication to change. Thus, one test is to determine a set of values to configure the registers with, so that the data signals associated with the communication meet the specifications of the graphics memory.
To illustrate, FIG. 1 is a schematic diagram illustrating a GPU 100 communicating with a local graphics memory 106 through a local bus 108. The GPU 100 includes registers 102 and 104, which control the hardware configuration in the GPU to change the interface between the GPU and the local graphics memory 106. One way to verify whether the GPU registers 102 and 104 contain the valid values for the GPU 100 to communicate with the local graphics memory 106 is by checking whether the data written to a certain memory location in the local graphics memory 106 can be properly retrieved. Specifically, by configuring the registers 102 and 104 with different values, the test then compares the data written to and retrieved from the local graphics memory 106 during the communication between the GPU 100 and the local graphics memory 106. If the data sent to and received from the local graphics memory 106 are inconsistent, or if no data is retrieved from the local graphics memory 106, then the test fails, and the register values used in the failure scenario are considered invalid. On the other hand, if the data sent to and received from the local graphics memory 106 are the same, then the test passes, and the register values used in the passing scenario are considered valid.
FIG. 2 is a simplified block diagram illustrating the configuration of an evaluation setup for testing multiple GPUs. GPUs 202, 206, and 210 are placed on testing graphics adapters 200, 204, and 208, respectively. The testing graphics adapters are further connected to a computer 212, in which a diagnostic tool, Modular Diagnostic Software (MODS), is executed on. The evaluation setup is typically for the same version and the same type of the GPU and the graphics adapter. MODS generally configures a register in each of the GPUs with different register values, performs the data comparison discussed above, and generates one corresponding log file containing “pass” and “fail” information. Conventionally, to establish which register values are considered valid, a human operator needs to locate the log file on the computer 212, open it, fill all the log files into certain spreadsheet templates which are manually created in advance, and inspect the information in the spreadsheets to make the determination. As the testing conditions become more and more complicated (e.g., increasing number of register values to verify and various versions or types of the GPU and graphics adapters to test), MODS also generates more and more log files. As a result, the human operator is required to inspect and manipulate information from an increasing number of log files. Such a labor-intensive process is not only burdensome and inefficient, but is also error-prone.
What is needed in the art is thus a method and system that can cost effectively and automatically analyze testing results without placing undue burden on a human operator and address at least the problems set forth above.